/**
 * 客户管理相关的API接口封装
 * 提供客户数据的增删改查功能
 */

// 导入请求工具函数
import request from "@/utils/request"

/**
 * 获取客户列表（支持分页和筛选）
 * @param {Object} params - 请求参数
 * @param {number} params.page - 页码，默认为1
 * @param {number} params.pageSize - 每页条数，默认为10
 * @param {string} params.customer_name - 客户名称筛选条件（可选）
 * @param {string} params.phone - 联系电话筛选条件（可选）
 * @param {string} params.contact_person - 联系人筛选条件（可选）
 * @param {string} params.address - 客户地址筛选条件（可选）
 * @returns {Promise} 返回包含客户列表和分页信息的Promise
 */
export function getCustomerList(params = {}) {
  // 设置默认分页参数
  const defaultParams = {
    page: 1,
    pageSize: 10,
    ...params
  }

  return request({
    url: "/customers/list",
    method: "get",
    params: defaultParams
  });
}

/**
 * 获取客户详情
 * @param {string|number} id - 客户ID
 * @returns {Promise} 返回包含客户详情信息的Promise
 */
export function getCustomerById(id) {
  return request({
    url: `/customers/${id}`,
    method: "get"
  });
}

/**
 * 创建客户
 * @param {Object} data - 客户数据
 * @param {string} data.customer_name - 客户名称
 * @param {string} data.contact_person - 联系人
 * @param {string} data.phone - 联系电话
 * @param {string} data.address - 客户地址
 * @returns {Promise} 返回创建结果的Promise
 */
export function createCustomer(data) {
  return request({
    url: "/customers/add",
    method: "post",
    data
  });
}

/**
 * 更新客户
 * @param {string|number} id - 客户ID
 * @param {Object} data - 客户数据
 * @param {string} data.customer_name - 客户名称
 * @param {string} data.contact_person - 联系人
 * @param {string} data.phone - 联系电话
 * @param {string} data.address - 客户地址
 * @returns {Promise} 返回更新结果的Promise
 */
export function updateCustomer(id, data) {
  return request({
    url: `/customers/update`,
    method: "put",
    data
  });
}

/**
 * 删除客户
 * @param {string|number} id - 客户ID
 * @returns {Promise} 返回删除结果的Promise
 */
export function deleteCustomer(id) {
  return request({
    url: `/customers/${id}`,
    method: "delete"
  });
}

/**
 * 批量操作客户
 * @param {Object} data - 批量操作数据
 * @param {string} data.action - 操作类型 ('delete')
 * @param {Object} data.data - 操作数据
 * @param {Array} data.data.ids - 客户ID数组
 * @returns {Promise} 返回操作结果的Promise
 */
export function batchCustomerOperation(data) {
  return request({
    url: "/customers/batch",
    method: "post",
    data
  });
}

/**
 * 导入客户（Excel文件）
 * @param {File} file - Excel文件
 * @returns {Promise} 返回导入结果的Promise
 */
export function importCustomers(file) {
  const formData = new FormData();
  formData.append('file', file);

  return request({
    url: "/customers/import",
    method: "post",
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });
}
